#include <iostream>
#include <future>
#include <memory>
#include <thread>

int add(int a, int b)
{
    std::cout <<"in\n";
    return a + b;
}

int main()
{
    //先实例化一个存储结果的promise对象
    auto pro = std::make_shared<std::promise<int>>();
    
    //通过promise对象，关联future对象
    std::future<int> res = pro->get_future();

    std::thread thr([pro](){
        int sum = add(11, 22);
        pro->set_value(sum);    //给promise设置数据
    });

    std::cout << res.get() << std::endl;

    thr.join();
    
    return 0;
}